IModel.SetFieldAt メソッド

名前空間: NextDesign.Core

説明

このインスタンスの指定されたフィールドの指定されたインデックス位置に、指定された値を設定します。
指定されたフィールドに設定できない値が指定された場合は、例外がスローされます。
なお、フィールドの多重度上限制約、パス制約に違反しても例外はスローされません。

引数

名前 説明
fieldName string フィールド名
null、または空文字列は指定できません。
value object フィールドの値
index int 位置
先頭位置を0とするインデックスを指定します。

戻り値

  • void

例外

名前 例外クラス 説明
引数不正 ExtensionArgumentException fieldName に null、または空文字列 を指定した場合
フィールドが見つからない ExtensionFieldNotFoundException 指定されたフィールドがこのインスタンスのメタクラスで見つからない場合
不正フィールドアクセス ExtensionIllegalFieldAccessException 多重度の上限が1のフィールドに対してこのメソッドを実行した場合
インデックス範囲不正 ExtensionOutOfRangeException index に 負数が指定された場合
または、index に該当フィールドの要素数以上の値が指定された場合
フィールドの型と一致しない ExtensionInvalidTypeException value に対して、指定されたフィールドに設定できない値が指定された場合
- クラス型のフィールドにプリミティブ型の値や、列挙値が指定された
- 互換のないクラス型が指定された
不正操作 ExtensionInvalidOperationException 自身が削除済みモデル、一時プロキシの場合
フィールド名に操作不可のフィールドが指定された場合
- プロダクトラインのフィーチャ割り当てフィールド
- System.Coreタグが付与されているフィールド
循環参照 ExtensionCircularReferenceException クラス型の所有フィールドに対しての呼び出し時、引数 value にこのメソッドの呼び出し対象自身またはその祖先を指定した場合
無効なモデルを指定した ExtensionInvalidModelException フィールドの値に削除されたモデル、一時プロキシが指定された場合

注釈

フィールドの型によって設定できる値について

フィールドの型によって設定できる値が以下のように決まります。

  • プリミティブ型フィールド(整数、実数、真偽値、文字列、リッチテキスト)

    本メソッドでは設定できません。

  • 列挙型フィールド

    本メソッドでは設定できません。

  • クラス型フィールド

    クラス型のフィールドでは、IModelインタフェースのインスタンスおよびnullを設定できます。

    IModel型の値が指定された場合、既に設定されていたモデルの代わりに、指定されたモデルを設定します。
    このとき、フィールドが所有か参照かで動作が異なります。

    • 所有の場合、引数で指定されたモデルを、メソッド呼び出し元のモデルの子として移動します。また、既に設定されていたモデルを削除します。
    • 参照の場合、引数で指定されたモデルとの間に参照関連を追加します。また、既に設定されていたモデルとの間に存在した参照関連を削除します。既に設定されていたモデル自体は削除されません。

    nullが指定された場合、既に設定されていたモデルの設定解除のみ行います。

    • 所有の場合、既に設定されていたモデルは削除します。
    • 参照の場合、既に設定されていたモデルとの間に存在した参照関連を削除します。既に設定されていたモデル自体は削除されません。

    nullが指定されたとき、指定番目の要素が削除され、後続の要素が前方に詰められます。